#ifndef CONSTANTES_H
#define CONSTANTES_H

#include <string>

#define WINDOW_WIDTH 1024		//width of the window
#define WINDOW_HEIGHT 700		//height of the window
#define GAME_WINDOW_X (WINDOW_WIDTH / 5)		//x position of the game window
#define GAME_WINDOW_WIDTH (WINDOW_WIDTH * 3 / 5)		//height of the game window
#define GAME_WINDOW_HEIGHT WINDOW_HEIGHT		//height of the game window

#define NUMBER_OPTION_MENU 4    //number of options in the menu
#define MENU_OPTION_WIDTH 250       //width of an option menu
#define MENU_OPTION_HEIGHT 60       //height of an option menu

#define DELAY 20                //delay for refresh

#define NUMBER_STATES 3          //number of different state for entities
#define NUMBER_SHOTS 2          //number of different type of shots
#define NUMBER_POWERUP 2          //number of different type of power up
#define NUMBER_ENEMIES 4          //number of different type of enemies

#define BLINK_PLAYER_TIME 3000            //time during a blink occur
#define BLINK_ENEMY_TIME 500    //time between 2 blink of an entity

#define MAX_PLAYERS 2           //Maximum number of players
#define NUMBER_LEVELS 3          //number of levels in the game

//initial position of players

#define INITX_PLAYER (WINDOW_WIDTH / 2)
#define INITY_PLAYER (WINDOW_HEIGHT - 50)

//speed of players
#define SPEEDX_PLAYER 8
#define SPEEDY_PLAYER 8

//ratio for the collision bon of the player
#define COLISIONBOX_RATIO_WIDTH 0.2
#define COLISIONBOX_RATIO_HEIGHT 0.2

//number of lives for the player
#define NUMBER_LIVES_PLAYER 3

    enum SHIP_STATE { STANDBY = 0, DEAD, BLINK };     //enum of different type of shots
    enum TYPE_SHOT { DEFAULTSHOT = 0, BOMB };     //enum of different type of shots
    enum TYPE_POWERUP { DEFAULTPOWERUP = 0, SHOTPOWERUP };     //enum of different type of shots
    enum TYPE_COLLISION { AIR = 0, LAND };      //enum for type of collisions between entities
                                                //for exemple : AIR can collide with AIR but not with LAND
    enum TYPE_ENEMY { DEFAULTENEMY = 0, DIAGONALENEMY, HORIZONTALENEMY, BOATENEMY }; //enum for the types of enemies

const std::string szStateDir[NUMBER_STATES] = { "STANDBY", "DEAD", "BLINK" };
const std::string szShotDir[NUMBER_SHOTS] = { "DEFAULTSHOT", "BOMB" };
const std::string szTypePowerUpDir[NUMBER_POWERUP] = { "DEFAULTPOWERUP", "SHOTPOWERUP" };

const std::string szPlayerDir[MAX_PLAYERS] = { "data/player1/",
                                        "data/player2/" };

const std::string szEnemyDir[NUMBER_ENEMIES] = { "data/defaultenemy/",
                                            "data/diagonalenemy/",
                                            "data/horizontalenemy/",
                                            "data/boatenemy/" };

const std::string szPowerUpDir("data/powerup/");

const std::string szLevelsDir("data/levels/");
const std::string szHighScoreDir("data/saves/highscore");
const std::string szSaveGameDir("data/saves/game");

const std::string szSurfacesDir("data/surfaces/");
const std::string szMenuDir[NUMBER_OPTION_MENU] = { "1player",
                                                    "2players",
                                                    "load",
                                                    "quit" };

#endif
